쉘이 실행되는 방법은 3가지가 있다.
- login Shell
- Interactive Shell(서브쉘 생성할 때)
- Non Interactive Shell(스크립트 실행 시)
Login Shell
Login Shell Process:
/etc/profile
$HOME/.bash_profile
$HOME/.bashrc
$HOME/.bash_login
$HOME/.profile
- /etc/profile
bash 쉘의 주요 기본 시작 파일이다. 리눅스 시스템에 로그인할 때마다 bash는 /etc/profile 시동 파일에 있는 명령을 수행한다.
대부분의 리눅스 배포판은 $HOME 시동 파일들 가운데 하나 또는 두가지만을 사용한다.
(환경 파일은 리눅스 배포판 마다 매우 다르다.)
$HOME/.bash_profile
$HOME/.bash_login
$HOME/.profile
위와 같은 순서에 따라 호출되며, 처음 발경되는 파일만을 실행하며 나머지는 무시된다.
(.bashrc는 위의 파일들 중 한 곳에서 실행됨으로서 환경 변수를 참조한다.)
Interactive ShellLogin Shell을 거치지 않은 경우(CLI에서 bash 명령과 같은 서브 쉘로 호출)
/etc/profile 파일을 처리하지 않는다.
대신 $HOME/.bashrc 파일만 확인한다.
Non Interactive Shellbash 쉘에서는 BASH_ENV 환경 변수를 제공하며,
쉘이 비대화형 서브 쉘 프로세스로 실행될 때, 시동 파일 이름을 해당 환경 변수에서 찾는다.
영구적인 변수 지정/etc/profile에 영구적으로 변경하고 싶은 변수를 저장하는 것은 동작하는데 무리가 없지만,
리눅스 배포판의 업데이트 과정에서 파일이 변경될 위험이 있다.
/etc/profile.d 디렉토리내에 쉘 스크립트(*.sh)에 수정한 전역 환경 변수 설정을 모두 배치할 수 있다.
배포판에서 개별 사용자의 영구적인 bash 쉘 변수를 저장하기 위해 $HOME/.bashrc를 사용하는 것이 가장 좋다.
($HOME/.bashrc는 모든 유형의 쉘 프로세스에 대해서 참조된다.)